package cn.itcast.bos.action.take_delivery;

import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;

import org.apache.commons.io.FileUtils;
import org.apache.commons.lang.RandomStringUtils;
import org.apache.struts2.ServletActionContext;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Namespace;
import org.apache.struts2.convention.annotation.ParentPackage;
import org.apache.struts2.convention.annotation.Result;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;

import com.opensymphony.xwork2.ActionContext;

@ParentPackage("json-default")
@Namespace("/")
@Controller
@Scope("prototype")
public class ImageAction {
	
	private File imgFile;
	private String imgFileFileName;
	
	public void setImgFile(File imgFile) {
		this.imgFile = imgFile;
	}

	public void setImgFileFileName(String imgFileFileName) {
		this.imgFileFileName = imgFileFileName;
	}

	@Action(value="imageUpload",results={@Result(name="success",type="json")})
	public String imageUpload() throws IOException{
		
		String path = ServletActionContext.getServletContext().getRealPath("/upload");
		int indexOf = imgFileFileName.lastIndexOf(".");
		String fileName =UUID.randomUUID()+imgFileFileName.substring(indexOf);
		
		File file = new File(path+"/"+fileName);
		FileUtils.copyFile(imgFile, file);
		String url = ServletActionContext.getServletContext().getContextPath()+"/upload/"+fileName;
		HashMap<String, Object> map = new HashMap<String, Object>();
		map.put("error", 0);
		map.put("url", url);
		ActionContext.getContext().getValueStack().push(map);
		return "success";
	}
	
	
	@Action(value="imageManager",results={@Result(name="success",type="json")})
	public String imageManager(){
		
		String rootPath = ServletActionContext.getServletContext().getRealPath("/")+"/upload";
		String rootUrl = ServletActionContext.getServletContext().getContextPath()+"/upload/";
		
		// 遍历目录取的文件信息
				List<Map<String, Object>> fileList = new ArrayList<Map<String, Object>>();
				// 当前上传目录
				File currentPathFile = new File(rootPath);
				// 图片扩展名
				String[] fileTypes = new String[] { "gif", "jpg", "jpeg", "png", "bmp" };

				if (currentPathFile.listFiles() != null) {
					for (File file : currentPathFile.listFiles()) {
						Map<String, Object> hash = new HashMap<String, Object>();
						String fileName = file.getName();
						if (file.isDirectory()) {
							hash.put("is_dir", true);
							hash.put("has_file", (file.listFiles() != null));
							hash.put("filesize", 0L);
							hash.put("is_photo", false);
							hash.put("filetype", "");
						} else if (file.isFile()) {
							String fileExt = fileName.substring(
									fileName.lastIndexOf(".") + 1).toLowerCase();
							hash.put("is_dir", false);
							hash.put("has_file", false);
							hash.put("filesize", file.length());
							hash.put("is_photo", Arrays.<String> asList(fileTypes)
									.contains(fileExt));
							hash.put("filetype", fileExt);
						}
						hash.put("filename", fileName);
						hash.put("datetime",
								new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(file
										.lastModified()));
						fileList.add(hash);
					}
				}
				Map<String, Object> result = new HashMap<String, Object>();
				result.put("moveup_dir_path", "");
				result.put("current_dir_path", rootPath);
				result.put("current_url", rootUrl);
				result.put("total_count", fileList.size());
				result.put("file_list", fileList);
				ActionContext.getContext().getValueStack().push(result);
		return "success";
	}
}
